YAHOO.namespace('Osimac.atencion');

YAHOO.Osimac.atencion.atencionesTable = function(elContainer, messages, listado) {
    this.messages = messages;
    this.listado = listado;
    YAHOO.Osimac.atencion.atencionesTable.superclass.constructor.call(this, elContainer,
    this.construirColumnDefs(), this.construirDataSource(), this.construirConfig());
};

YAHOO.lang.extend(YAHOO.Osimac.atencion.atencionesTable, YAHOO.Osimac.ListTableBase, {
    accionesFormatter: function(liner, record, column, data) {
        var self = this;
        var linerElement = new YAHOO.util.Element(liner);
        var classEditar="editar";
        var classVer="verDisabled";

        if (record.getData("idEstado")!=Osinergmin.EstadoAtencionEnum.PENDIENTE){
            classEditar="editarDisabled";
            classVer="ver";
        }

        linerElement.get('element').innerHTML =
        "<table style='margin-left:auto; margin-right:auto; width: 50px; border:0px !important;'><tr><td><div class='"+classVer+"'></div></td><td><div class='"+classEditar+"'></></td></tr></table>";
        self.setAccionTooltip(linerElement,  '.ver', messages.atencionTable.ver, 5000);
        self.setAccionTooltip(linerElement,  '.editar', messages.atencionTable.editar, 5000);

         linerElement.delegate('click', function() {
            var nroAtencion = record.getData("nroAtencion");
            self.abrirPendiente(nroAtencion);
        }, '.editar');

        linerElement.delegate('click', function() {
            var nroAtencion = record.getData("nroAtencion");
            self.verAtencion(nroAtencion);
        }, '.ver');
             
    },
    abrirPendiente: function(idAtencion){
        Osinergmin.loading.show();
        document.location=Osinergmin.contextPath+"/pages/atencion/abrirPendiente?idAtencion="+idAtencion;
    },
    verAtencion: function(idAtencion){
        Osinergmin.loading.show();
        document.location=Osinergmin.contextPath+"/pages/atencion/ver?idAtencion="+idAtencion;
    },
    sectorFormatter: function(liner, record, column, data){
        
        liner.innerHTML = 'Sector 1';
        
    },
    motivoFormatter: function(liner, record, column, data){
        
        liner.innerHTML = 'Motivo 1';
        

    },
    nulosFormatter: function(liner, record, column, data) {
        if (!data) {
            liner.innerHTML = '---';
        } else {
            liner.innerHTML = data;
        }
    },
    ciudadanoFormatter: function (liner, record, column, data){
        var representado=record.getData().representado;
        if (data.nombre==""){
            liner.innerHTML="Anónimo";
        }else{
            if (representado==null){
                liner.innerHTML=data.nombre;
            }else{
                liner.innerHTML=data.nombre +" / "+representado.nombre;
            }
        }
    },
    nroDocFormatter: function(liner, record, column, data){
        if (data.nroDocumento!="")
            liner.innerHTML=data.nroDocumento;
        else{
            if (data.ruc!="")
                liner.innerHTML=data.ruc;
            else
                liner.innerHTML="---";
        }
    },
    doBeforeLoadData: function(oRequest, oResponse, oPayload) {
        oPayload.totalRecords = oResponse.meta.totalRecords;
        oPayload.pagination.recordOffset = oResponse.meta.startIndex;
        $("#cantidadRegistros").html(messages.atencionTable.totalRegistros +" "+oPayload.totalRecords);
        $("#labelCiudadano").html("");
         $("#idCiudadano").val("");
        if ($("#nroDocumentoCiudadano").val().trim()!=""){
            if (oPayload.totalRecords==0){
                $("#labelCiudadano").html(messages.noCiudadano);
            }else{
                $("#labelCiudadano").html(oResponse.results[0].cliente.nombre.toUpperCase());
                $("#idCiudadano").val(oResponse.results[0].cliente.idCliente);
            }
        }
        return oPayload;
    },
    construirColumnDefs: function() {
        return [
          
            {
                key: 'nroAtencion',
                minWidth: 30,
                label: this.messages.atencionTable.columna.nroAtencion
            },
            {
                key:'cliente',
                minWidth: 30,
                label: this.messages.atencionTable.columna.identificacion,
                formatter: this.nroDocFormatter
            },
            {
                key: 'cliente',
                minWidth: 60,
                label: this.messages.atencionTable.columna.ciudadano,
                formatter: this.ciudadanoFormatter
            },
            {
                key: 'idSector',
                label: this.messages.atencionTable.columna.sector,
                minWidth: 180,
                formatter: this.sectorFormatter
            },
            {
                key: 'motivo',
                resizeable: true,
                minWidth: 300,
                label: this.messages.atencionTable.columna.motivo,
                formatter: this.motivoFormatter
            },
            {
                key: 'fechaModificacion',
                minWidth: 100,
                label: this.messages.atencionTable.columna.fecha
            },
            {
                key: 'strEstado',
                label: this.messages.atencionTable.columna.estado
            },
            {
                key: 'acciones',
                label: this.messages.atencionTable.columna.acciones,
                minWidth: 70,
                maxWidth: 70,
                className: 'accionesColumn',
                formatter: this.accionesFormatter
            }
        ];
    },
    construirDataSource: function() {

        var forceIERequest = new Date().getTime();
        var dataSource = new YAHOO.util.XHRDataSource(Osinergmin.contextPath + "/pages/atencion/find?fie=" + forceIERequest+"&");
        dataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;

        dataSource.responseSchema = {
            resultsList: "lstAtencionesDTO",
            metaFields: {
                totalRecords: "totalRecords",
                startIndex: "startIndex"
            },
            fields: [ {key: 'nroAtencion'}, {key: 'tema'}, {key:'fechaModificacion'},{key:'idSector'},{key:'idMotivo'},{key:'strEstado'},{key:'cliente'},{key:'representado'},{key:'idEstado'}]
        };

        return dataSource;
        
    },
    construirConfig: function() {

        return {
            MSG_LOADING: 'Cargando...',
            MSG_EMPTY :'No se encontraron datos.',
            MSG_ERROR: "Error cargando datos, es muy probable que la sesión haya expirado.. <a href='" + Osinergmin.contextPath + "/pages/public/login'>Haga clic aquí para volver a acceder al sistema.</a>",
            generateRequest: this.generarRequest,
            //initialLoad: true,
            initialRequest:this.generarRequest(),
            dynamicData: true,
            paginator : new YAHOO.widget.Paginator({
                rowsPerPage: this.messages.atencionTable.paginacion.filasxpagina,
                containers:  "atencionPaginator", //contenedor
                firstPageLinkLabel: this.messages.atencionTable.paginacion.inicio,
                lastPageLinkLabel: this.messages.atencionTable.paginacion.fin,
                previousPageLinkLabel: this.messages.atencionTable.paginacion.anterior,
                nextPageLinkLabel: this.messages.atencionTable.paginacion.siguiente,
                pageLinkClass: 'pageLinkClass',
                template: "{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
            })
        }
    },
    generarRequest: function(oState, oSelf) {
      oState = oState || {
            pagination: null,
            sortedBy: null
        };

        var sort = (oState.sortedBy) ? oState.sortedBy.key : "id";
        var dir = (oState.sortedBy && oState.sortedBy.dir === YAHOO.widget.DataTable.CLASS_DESC) ? "desc" : "asc";
        var startIndex = (oState.pagination) ? oState.pagination.recordOffset : 0;
        var results = (oState.pagination) ? oState.pagination.rowsPerPage : this.messages.atencionTable.paginacion.filasxpagina;
        var nroAtencion=$("#nroAtencion").val().trim();
        var nombre=$("#nombre").val().trim();
        var nroDocumento=$("#nroDocumentoCiudadano").val().trim();
        var idEstado =$('#idEstado').val();
        var codDependencia = $('#codDependencia').val();
        var idTipoAtencion=$("#idTipoAtencion").val();
        var fechaDesde = $('#fechaDesde').val();
        var fechaHasta = $('#fechaHasta').val();
        var expediente=$("#expediente").val().trim();
        var idCanal=$("#idCanal").val();
        var telefono=$("#nroTelefono").val();

        return 'sort=' + sort +
               '&dir=' + dir +
               '&startIndex=' + startIndex +
               '&results=' + (startIndex + results) +
               '&nroAtencion='+nroAtencion+
               '&nombre='+nombre+
               '&nroDocumento='+nroDocumento+
               '&idEstado='+idEstado+
               '&codDependencia='+codDependencia+
               '&idTipoAtencion='+idTipoAtencion+
               '&fechaDesde='+fechaDesde+
               '&fechaHasta='+fechaHasta+
               '&expediente='+expediente+
               '&idCanal='+idCanal+
               '&nroTelefono='+telefono;
               
               
               
    },
    recargarData: function() {
        var self = this;
            oCallback = {
                success: self.onDataReturnInitializeTable,
                failure: self.onDataReturnSetRows,
                scope: self,
                argument: self.getState()
            };
        self.getDataSource().sendRequest(self.generarRequest(), oCallback);
        
    },
    tieneRegistros: function(){
        return this.getRecordSet().getLength()>0;
    }
});